package com.lane.imooc;

public class Initail {
	public static void main(String[] args) {
		// 多态
		Animal obj1 = new Animal();
		Animal obj2 = new Dog(); // 父类的引用是可以指向子类对象的

		Animal obj3 = new Cat();

		obj1.eat();
		obj2.eat();
		obj3.eat();// 是子类继承父类的eat方法

		// 不允许一个子类的对象指向一个父类
		// Dog obj3=new Animal();

		Dog dog = new Dog();
		Animal animal = dog; // 使用一个父类的引用指向这个对象,自动类型提升和向上类型转换

		if (animal instanceof Dog) {
			Dog dog2 = (Dog) animal; // 这样做是有风险的，向下类型转换，强制类型转换
			dog2.eat();
		} else {
			System.out.println("无法进行类型转换 转换成Dog类型");
		}

		// 如果animal对象里边儿含有Cat类型的元素，就可以转换
		if (animal instanceof Cat) {
			Cat cat = (Cat) animal; // 1.编译时 Cat类型 2.运行时Dog类型
			cat.eat();
		} else {
			System.out.println("无法进行类型转换 转换成Cat类型");
		}
	}
}